import 'package:f_enjoy_plus_community/utils/http.dart';
import 'package:f_enjoy_plus_community/utils/toast.dart';
import 'package:flutter/material.dart';
import 'package:flutter_html/flutter_html.dart';

class NoticeDetail extends StatefulWidget {
  const NoticeDetail({super.key});

  @override
  State<NoticeDetail> createState() => _NoticeDetailState();
}

class _NoticeDetailState extends State<NoticeDetail> {
  Map<String, dynamic> params = {};

  Map notifyDetail = {};

  // initState在路由传参之前就已经完成了，
  // 不能在initState中接收ModalRoute中的数据
  @override
  void initState() {
    super.initState();
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    // 接收路由参数
    final data = ModalRoute.of(context)?.settings.arguments;
    if (data != null) {
      params = data as Map<String, dynamic>;
      getNotifyDetail();
    }
  }

  void getNotifyDetail() async {
    try {
      // 请求数据
      var res = await http.get('/announcement/${params['id']}');
      if (res['code'] != 10000) return ToastUtil.showError('获取数据失败');
      ToastUtil.showSuccess('获取数据成功');
      setState(() {
        notifyDetail = res['data'];
      });
    } catch (e) {
      ToastUtil.showError('请求失败：$e');
    }
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('公告详情')),
      body: notifyDetail.isEmpty
          ? const Center(child: CircularProgressIndicator())
          : ListView(
              children: [
                Container(
                  padding: const EdgeInsets.all(10),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.start,
                    children: [
                      // 标题
                      Text(
                        notifyDetail['title'] ?? '',
                        style: const TextStyle(
                          fontSize: 18,
                          fontWeight: FontWeight.bold,
                        ),
                      ),
                      const SizedBox(height: 10),
                      Row(
                        mainAxisAlignment: MainAxisAlignment.spaceBetween,
                        children: [
                          Text(
                            notifyDetail['creatorName'] ?? '',
                            style: const TextStyle(color: Colors.grey),
                          ),
                          Text(
                            notifyDetail['createdAt'] ?? '',
                            style: const TextStyle(color: Colors.grey),
                          ),
                        ],
                      ),
                      const SizedBox(height: 10),
                      // 内容
                      // Text(notifyDetail['content'] ?? ''),
                      // 富文本
                      Html(data: notifyDetail['content'] ?? ''),
                    ],
                  ),
                ),
              ],
            ),
    );
  }
}
